package com.wang.xml;

import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class test2 {
    public static void main(String[] args){
        //导入dll
        String relativelyPath = System.getProperty("user.dir");
        System.load(relativelyPath + "\\opencv_java320.dll");
        //扫描图片地址
        Mat mat = Imgcodecs.imread("C:\\Users\\WS\\Desktop\\data\\2.png");
        //扫描后的图片
        Mat hsv_image = new Mat(mat.size(), mat.type());
        Mat mat2=new Mat(mat.size(), mat.type());
        //将图片的格式转为HSV模式,原来为RGB
        Imgproc.cvtColor(mat, hsv_image, Imgproc.COLOR_BGR2HSV);
        // 色调（H），饱和度（S），明度（V)
        // 下面就可以进行颜色的提取了
        int num=0;
        int num_rows = hsv_image.rows();
        int num_col = hsv_image.cols();
        for (int i = 0; i < num_rows; i++) {
            for (int j = 0; j < num_col; j++) {
                System.out.println("i:"+i+"  j:"+j);
                // 获取每个像素
                double[] clone = hsv_image.get(i, j).clone();
                double hun = clone[0]; // HSV hun

                if ((hun >= 0 && hun < 10) || (hun > 156 && hun < 180)) {
                    if (clone[1] > 35 && clone[1] < 255) {
                        if (clone[2] < 255 && clone[2] > 46) {
                            // 红色范围,全部设置为黑色,
                            clone[0] = 0;
                            clone[1] = 0;
                            clone[2] = 255;
                            num++;
                            mat2.put(i, j, clone);
                        }
                    }
                }
            }
        }
        System.out.println(num);
        String filename = "C:\\Users\\WS\\Desktop\\data\\003.png";
        //保存图像到Result目录中
        Imgcodecs.imwrite(filename, mat2);

    }
}
